/**
 * 
 */
package belote.model.jeu;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Gwenn
 *
 */
public class Paquet implements Serializable {

	private static final long serialVersionUID = -5047553155589515875L;
	
	// -------------------------------------------------------------- Attributs
	
	protected final List<Carte> cartes = new ArrayList<Carte>(32);
	
	// ----------------------------------------------------------- Constructeur
	
	public Paquet() {
		
		// Initialisation du paquet (comme neuf)
		List<Carte> paquetNeuf = new ArrayList<Carte>();
		for (Carte carte : Carte.values()) {
			paquetNeuf.add(carte);
		}
		
		// On melange les cartes
		int n = 0;
		for (int i = 32; i > 0; i--) {
			n = (int) (Math.random() * i);
			cartes.add(paquetNeuf.remove(n));
		}
	}
	
	// ----------------------------------------------------- Methodes publiques
	
	public void couper(int pNombreDeCoupe) {
		
		if (cartes.size() != 32) {
			throw new IllegalStateException("Ya un truc qui va pas, il manque des cartes dans le paquet !!!");
		}
		
		for (int i = 0; i < pNombreDeCoupe; i++) {
			cartes.add(cartes.remove(0));
		}
	}
	
	public List<Carte> distribuer(int pNombre) {
		
		List<Carte> cartesADistribuer = new ArrayList<Carte>(pNombre);
		for (int i = 0; i < pNombre; i++) {
			cartesADistribuer.add(cartes.remove(0));
		}
		return cartesADistribuer;
	}
	
	public Carte retourner() {
		
		return cartes.remove(0);
	}
	
	public void ajouter(List<Carte> pCartes) {
		
		for (Carte carte : pCartes) {
			cartes.add(carte);
		}
	}
}
